package fachada;

import excecoes.ExcecaoAbastecimentoExistente;
import excecoes.ExcecaoAbastecimentoInexistente;
import abastecimento.Abastecimento;
import abastecimento.CadastroAbastecimento;
import abastecimento.IRepositorioAbastecimento;
import abastecimento.RepositorioAbastecimentoArray;

/**
 * 
 * @author ricardo vasconcelos
 *
 */

public class Fachada {

	private static Fachada instancia;

	private CadastroAbastecimento cadastroAbastecimento;

	private IRepositorioAbastecimento repositorioAbastecimento;

	private Fachada() {
		repositorioAbastecimento = new RepositorioAbastecimentoArray();
		cadastroAbastecimento = new CadastroAbastecimento(
				repositorioAbastecimento);
	}

	public static Fachada getInstancia() {
		if (instancia == null) {
			instancia = new Fachada();
		}

		return instancia;
	}

	public void inserirAbastecimento(Abastecimento pAbastecimento)
			throws ExcecaoAbastecimentoExistente {
		cadastroAbastecimento.inserirAbastecimento(pAbastecimento);
	}

	public void alterarAbastecimento(Abastecimento pAbastecimento)
			throws ExcecaoAbastecimentoInexistente {
		cadastroAbastecimento.alterarAbastecimento(pAbastecimento);
	}

	public void removerAbastecimento(int pNumero)
			throws ExcecaoAbastecimentoInexistente {
		cadastroAbastecimento.removerAbastecimento(pNumero);
	}

	public Abastecimento consultarAbastecimentoPorChavePrimaria(int pNumero)
			throws ExcecaoAbastecimentoInexistente {
		return cadastroAbastecimento
				.consultarAbastecimentoPorChavePrimaria(pNumero);
	}
	
	public Abastecimento[] listarAbastecimentos() {
		return cadastroAbastecimento.listarAbastecimentos();
	}

}
